package com.pug.service.category;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pug.mapper.category.CategoryMapper;
import com.pug.pojo.Category;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 飞哥
 * @Title: 学相伴出品
 * @Description: 飞哥B站地址：https://space.bilibili.com/490711252
 * 记得关注和三连哦！
 * @Description: 我们有一个学习网站：https://www.kuangstudy.com
 * @date 2022/4/27$ 20:41$
 */
@Service
@Slf4j
public class CategoryServiceImpl extends ServiceImpl<CategoryMapper, Category> implements ICategoryService {
    String CATEGORY_REDIS_KEY = "pug:category:index";
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 查询分类，非线程池做法
     * @return
     */
    @Override
    public List<Category> findCategories() {
        List<Category> redisList= (List<Category>)redisTemplate.opsForValue().get(CATEGORY_REDIS_KEY);
        if(redisList==null||redisList.size()==0){
            QueryWrapper<Category> queryWrapper=new QueryWrapper();
            queryWrapper.eq("status",1);
            List<Category> list = this.list(queryWrapper);
            return list;
        }
        return redisList;
    }

/**
     * 查询分类
     *
     * @return
     */
//    @Override
//    public List<Category> findCategories() {
//        // 1: 在缓存中获取分类信息
//        List<Category> cacheList = (List<Category>)
//                redisTemplate.opsForValue().get(CATEGORY_REDIS_KEY);
//        // 2: 如果没有命中到
//        if (CollectionUtils.isEmpty(cacheList)) {
//            LambdaQueryWrapper<Category> lambdaQueryWrapper = new LambdaQueryWrapper<>();
//            lambdaQueryWrapper.eq(Category::getStatus, 1);
//            lambdaQueryWrapper.orderByAsc(Category::getSorted);
//            // 直接从数据查询
//            List<Category> list = this.list(lambdaQueryWrapper);
//            // 查询完毕放入缓存中
//            redisTemplate.opsForValue().set(CATEGORY_REDIS_KEY, list);
//            return list;
//        }
//        // 3：如果缓存有数据，直接返回
//        return cacheList;
//    }
}
